﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities;
using Entities.Modelo;

namespace DataAccessLayer
{
    public class RepositorioLocal : ObjectEntity, ICadastro<Local>
    {
        public RepositorioLocal()
            : base()
        {

        }

        public void InserirCadastro(Local objeto)
        {
            tbLocal tblocal = ComporObjetoLocalEntity(objeto);
            dataContext.AddTotbLocal(tblocal);
            dataContext.SaveChanges();
        }

        public void AlterarCadastro(Local objeto)
        {
            tbLocal tbLocalEditado = ComporObjetoLocalEntity(objeto);
            tbLocal tbLocalAtual = dataContext.tbLocal.Where(x => x.ID == objeto.ID).FirstOrDefault();
            dataContext.ApplyCurrentValues(tbLocalAtual.EntityKey.EntitySetName, tbLocalEditado);
            dataContext.SaveChanges();
        }

        public void ExcluirCadastro(Local objeto)
        {
            tbLocal tbLocalEditado = ComporObjetoLocalEntity(objeto);
            tbLocalEditado.Ativo = false;
            tbLocal tbLocalAtual = dataContext.tbLocal.Where(x => x.ID == objeto.ID).FirstOrDefault();
            dataContext.ApplyCurrentValues(tbLocalAtual.EntityKey.EntitySetName, tbLocalEditado);
            dataContext.SaveChanges();
        }

        public Local RetornarCadastro(int chave)
        {
            return (from l in dataContext.tbLocal
                    select new Local
                    {
                        Ativo = l.Ativo,
                        Departamento = l.Departamento,
                        ID = l.ID,
                        ID_Empresa = l.ID_Empresa

                    }).Where(local => local.Ativo == true).FirstOrDefault();
        }

        public IList<Local> RetornarDados()
        {
            return (from l in dataContext.tbLocal
                    select new Local
                    {
                        Ativo = l.Ativo,
                        Departamento = l.Departamento,
                        ID = l.ID,
                        ID_Empresa = l.ID_Empresa

                    }).Where(local => local.Ativo == true).ToList();
        }


        private tbLocal ComporObjetoLocalEntity(Local objeto)
        {
            tbLocal tbLocalEditado = new tbLocal();
            tbLocalEditado.ID = objeto.ID;
            tbLocalEditado.ID_Empresa = objeto.ID_Empresa;
            tbLocalEditado.Departamento = objeto.Departamento;
            tbLocalEditado.Ativo = objeto.Ativo;
            return tbLocalEditado;
        }
    }
}
